import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.ScrollPaneConstants;
import javax.swing.SwingConstants;
import javax.swing.border.EmptyBorder;
import javax.swing.JScrollBar;
import javax.swing.JList;
import java.util.HashSet;
import java.util.Collection;


public class VueConsultPeriodique extends Vue {
	private JPanel contentPane;
	private JTextField textFieldIsbn;
	private JTextField textFieldTitre;

	// pour que les boutons soient des attributs, il faut faire
	// "convert local to field"
	private JButton buttonRech;
	private JButton buttonAnnuler;
	private JButton buttonFermer;
	private JButton btnConsulter;
	
	DefaultListModel mo = new DefaultListModel();
	private JList ListArticles = new  JList(mo);
	/**
	 * Create the frame from search.
	 */
	
	public VueConsultPeriodique(Controleur controleur,final String isbn) {
		super(controleur);

		textFieldIsbn.setText(isbn);
		}

	
	/**
	 * Create the frame from menu.
	 * @wbp.parser.constructor
	 */
	
	public VueConsultPeriodique(Controleur controleur) {
		super(controleur);
		setTitle("Informations sur un periodique");
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setBounds(100, 100, 630, 475);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);

		JLabel lblNewLabel = new JLabel("Issn");
		lblNewLabel.setHorizontalAlignment(SwingConstants.RIGHT);
		lblNewLabel.setBounds(17, 66, 61, 15);
		contentPane.add(lblNewLabel);

		textFieldIsbn = new JTextField();
		textFieldIsbn.setBounds(112, 64, 114, 19);
		contentPane.add(textFieldIsbn);
		textFieldIsbn.setColumns(10);

		JLabel lblNewLabel_1 = new JLabel("Nom");
		lblNewLabel_1.setHorizontalAlignment(SwingConstants.RIGHT);
		lblNewLabel_1.setBounds(17, 147, 61, 15);
		contentPane.add(lblNewLabel_1);

		textFieldTitre = new JTextField();
		textFieldTitre.setEditable(false);
		textFieldTitre.setBounds(112, 145, 214, 19);
		contentPane.add(textFieldTitre);
		textFieldTitre.setColumns(10);

		buttonAnnuler = new JButton("Annuler");
		buttonAnnuler.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().fermerVue(VueConsultPeriodique.this);
			}
		});
		buttonAnnuler.setBounds(255, 98, 107, 25);
		contentPane.add(buttonAnnuler);

		buttonRech = new JButton("Rechercher");
		buttonRech.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().rechPeriodique(textFieldIsbn.getText());
			}
		});
		buttonRech.setBounds(255, 61, 107, 25);
		contentPane.add(buttonRech);

		buttonFermer = new JButton("Fermer");
		buttonFermer.setEnabled(false);
		buttonFermer.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().fermerVue(VueConsultPeriodique.this);
			}
		});
		buttonFermer.setBounds(197, 346, 107, 25);
		contentPane.add(buttonFermer);
		
		JLabel lblArticles = new JLabel("Parutions");
		lblArticles.setBounds(42, 246, 61, 15);
		contentPane.add(lblArticles);
		
		ListArticles.setModel(mo);
		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
		scrollPane.setBounds(223, 195, 228, 111);
		scrollPane.setViewportView(ListArticles);
		contentPane.add(scrollPane);
		
		btnConsulter = new JButton("Consulter");
		btnConsulter.setEnabled(false);
		btnConsulter.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().ConsulterParution(ListArticles.getSelectedValue());
			}
		});
		btnConsulter.setBounds(368, 346, 107, 25);
		contentPane.add(btnConsulter);
		
	}

	

	public void alimente(Periodique p)
	{
		textFieldTitre.setText(p.get_NomPeriodique());
		Collection<Parution> art= p.get_parutions().values() ;
		for(Parution a : art)
		{
			mo.addElement(a.get_IdParution());
		}
	}
	/**
	 * définition des états de la fenêtre, cad des régions actives selon
	 * l'état
	 */
	public void setEtat(int etat) {
		switch (etat) {
		case initiale: {
			buttonRech.setEnabled(true);
			buttonAnnuler.setEnabled(true);
			buttonFermer.setEnabled(false);
			break;
		}
		case finale: {
			buttonRech.setEnabled(false);
			buttonAnnuler.setEnabled(false);
			buttonFermer.setEnabled(true);
			btnConsulter.setEnabled(true);
			break;
		}
		}
	}
}
